package com.abner.design.patterns.adapter.objectadapter;


/**
 * 适配器介绍:
 * 		1) 适配器模式(Adapter Pattern)将某个类的接口转换成客户端期望的另一个接口表示，
 * 			主的目的是兼容性，让原本因接口不匹配不能一起工作的两个类可以协同工作。其别名为包装器(Wrapper)
 * 		2) 适配器模式属于结构型模式
 * 		3) 主要分为三类：类适配器模式、对象适配器模式、接口适配器模式
 * 对象适配器介绍:
 * 		1) 基本思路和类的适配器模式相同，只是将 Adapter 类作修改，
 * 		  不是继承 src 类，而是持有 src 类的实例，以解决兼容性的问题。
 * 		  即：持有 src 类，实现 dst 类接口，完成 src->dst 的适配
 * 		2) 根据“合成复用原则”，在系统中尽量使用关联关系（聚合）来替代继承关系。
 * 		3) 对象适配器模式是适配器模式常用的一种
 *	注意事项和细节:
 *		1) 对象适配器和类适配器其实算是同一种思想，只不过实现方式不同。
 * 			根据合成复用原则，使用组合替代继承，
 * 			所以它解决了类适配器必须继承 src 的局限性问题，也不再要求 dst必须是接口。
 * 		2) 使用成本更低，更灵活。
 * @author abner
 */
public class Client {

	public static void main(String[] args) {
		System.out.println(" === 对象适配器模式 ====");
		Phone phone = new Phone();
		phone.charging(new VoltageAdapter(new Voltage220V()));
	}

}
